package com.huazai.lock;

import java.util.concurrent.Semaphore;

/**
 * 信号量 辅助工具  ， 列子可以用停车库
 *
 * @author huazai
 * @date 2024/2/4
 */
public class SemaphoreDemo {
    public static void main(String[] args) {
        // 6两车停在3个车尾逻辑
        Semaphore s = new Semaphore(3);
        for (int i = 0; i < 6; i++) {
            new Thread(() -> {
                try {
                    s.acquire();
                    System.out.println(Thread.currentThread().getName() + " 抢到车位了");

                    // 停2秒
                    Thread.sleep(3000);
                    System.out.println(Thread.currentThread().getName() + " 走了");
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                } finally {
                    // 停完车就走了
                    s.release();
                }
            }, String.valueOf(i)).start();
        }
    }
}
